#!/bin/bash

#--------------------------------------------
# 说明：测试大量 dirquota 的创建，删除和查询
#		主要是测试配额数量过多时 listquota 是否因为数据量超出 NetMsgSize 而导致出错
#--------------------------------------------

set -e

if (($# == 0))
then
	echo "Usage: sh createQuota.sh <maxDirNum>"
	exit 1
fi

maxDirNum=$1

mountDir="/mnt/orcafs"
baseDir="/testListQuotaDir"
quotaDir="${mountDir}${baseDir}"

testDirPre=""
prefixStr="A123456789B123456789C123456789/" # 每一级子目录长度为 31，文件或目录名最长为 255
prefixNum=2 # 文件(目录)路径的最大长度是 4096，这里父目录的长度是  prefixNum * 31

for (( i=0; i<${prefixNum}; i++))
do
	testDirPre=${testDirPre}${prefixStr} # 构造配额目录父目录的路径
done

for (( i=0; i<${maxDirNum}; i++ ))
do 
	mkdir -p "${quotaDir}"/${testDirPre}testDir${i};
	orcafs-ctl --setquota --dir=${quotaDir}/${testDirPre}testDir${i} --hardlimit=100M > /dev/null
	echo -n -e "\rCreate dirQuota num ${i}"
done

echo -e "\n"
orcafs-ctl --listquota
echo -e "\n"

for ((i=0; i<${maxDirNum}; i++))
do 
    orcafs-ctl --removequota --dir=${baseDir}/${testDirPre}testDir${i} > /dev/null
	echo -n -e "\rRemove dirQuota num ${i}"
done

echo ""
echo "----------------After removequota-------------------"
orcafs-ctl --listquota --directmeta
